//
// 总结： 好乱， 栈是一个整体    节点是栈的底层
// Created by huangjunhao on 2022/10/11.
//

#ifndef KEBEN_LISTSTACK_H
#define KEBEN_LISTSTACK_H

#include "stdio.h"
#include "stdlib.h"
#include "assert.h"
#include "string.h"
#include "malloc.h"
#include "stdbool.h"

#define ElemType int   //结点内数据类型

//链栈的结点
typedef struct StackNode
{
    ElemType data;          //数据域
    struct StackNode *next; //指针域
}StackNode;

struct  LinkStack
{
    struct StackNode* stackTop;    //用栈顶指针表示整个链表
    int size;                 //记录元素的个数
};
typedef struct LinkStack LinkStack;

StackNode *createNode(ElemType data);
void insertNodeByHead(StackNode *headNode, ElemType data);
void printList(struct StackNode *headNode);
LinkStack *createStack();
void push(LinkStack *stack, ElemType data);
ElemType getTop(LinkStack *stack);
void pop(LinkStack *stack);
int IsEmpty(LinkStack *s);

#endif //KEBEN_LISTSTACK_H
